Multithreaded programming can increase the performance of an application. For example, a multithreaded program, when executed, can launch multiple threads to distribute work, e.g., distribute the handling of incoming server requests. Moreover, the dominance of concurrent processors, such as multithreaded processors and multi-cored processors, has made parallel programming advantageous to achieve peak performance from modern systems. Parallel programming can include generating a multi-thread program that launches multiple threads on multiple cores when executed. Multithreaded programming can be considerably more difficult to program than its single threaded counterpart. In addition to bugs common to sequential computer programs, multithreaded programming may produce bugs such as data races, atomicity violations, deadlock, and live lock.